package com.weishi.project.training.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.weishi.project.api.ret.SportsmanPhysicalQualityRet;
import com.weishi.project.api.vo.*;
import com.weishi.project.training.domain.Sportsman;
import com.weishi.project.training.domain.SportsmanPhysicalQuality;

/**
 * sportsmanPhysicalQualityService接口
 */
public interface ISportsmanPhysicalQualityService extends IService<SportsmanPhysicalQuality> {

    /**
     * 查询sportsmanPhysicalQuality列表
     */
    List<SportsmanPhysicalQuality> selectSportsmanPhysicalQualityList(SportsmanPhysicalQuality sportsmanPhysicalQuality);

    /**
     * 查询运动员姓名集合
     * @return List<Sportsman>
     */
    List<Sportsman> querySportsNameList();

    Map<String, List<SportsmanPhysicalQualityRet>> getSportsmanPhysicalQualityById(int sportsmanId);

    SportsmanPhysicalQuality getSportsmanPhysicalQualityDetails(int sportsmanId);

    void updateSportsmanPhysicalQualityById(SportsmanPhysicalQuality sportsmanPhysicalQuality);

    Map<String, List<SportsmanPhysicalQualityRet>> selectMapList(SportsmanPhysicalQuality sportsmanPhysicalQuality);

    /**
     *
     * @param sportsmanId
     * @param isOptimal 是否最优属性 true：最优 ；false：最新
     * @return
     */
    Map<String, List<SportsmanPhysicalQualityRet>> getSportsmanPhysicalQualityBySportsmanId(Integer sportsmanId,boolean isOptimal);


    /**
     * 运动员最优身体素质
     * @param rankingParamsVos
     * @return
     */
    List<RankingVo> getRanking(List<RangkingDetailsParamsVo> rankingParamsVos);

    /**
     * 运动员身体素质排名(总)
     * @param rankingParamsVos
     * @return List<RankingVo>
     */
    List<RankingVo> countSportsmanPhysicalQualityBySportsmanIdAndType(List<RankingParamsVo> rankingParamsVos);

    /**
     * 查看排名历史
     * @param rangkingDetailsParamsVo
     * @return
     */
    List<RangkingDetailsVo> getRangkingDetailsVo(RangkingDetailsParamsVo rangkingDetailsParamsVo);

    /**
     * 身体素质查看历史
     * @return
     */
    List<RangkingDetailsVo> getSportsmanPhysicalQualityHistory(HistoryVo historyVo);
}